package com.stagewebserver.webserver.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.stagecommon.common.dto.UploadDTO;
import com.stagecommon.common.pojo.Category;
import com.stagecommon.common.pojo.RespBean;
import com.stagecommon.common.pojo.WorksInfo;
import com.stageuploadserver.uploadserver.vo.UploadVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;


public interface WorksInfoService extends IService<WorksInfo> {

    /**
     * 获取新发布作品（按发布日期从新到旧排序）
     * @return
     */
    RespBean newWorksInfo();

    /**
     * 获取热门作品（按点赞从多到少排序）
     * @return
     */
    RespBean hotWorksInfo();

    /**
     * 根据作者获取作者的作品（按发布日期从新到旧排序）
     * @param userId
     * @return
     */
    RespBean userWorksInfo(Integer userId);

    /**
     * 根据id获取作品信息
     * @param workId
     * @return
     */
    RespBean<WorksInfo> selectWorkInfoById(Long workId);

    /**
     * 关键字模糊查询作品
     * @param keyword
     * @param type
     * @return
     */
    RespBean selectWorkByKeyword(String keyword, String type);

    /**
     * 根据分类获取作品
     * @param category
     * @param type
     * @return
     */
    RespBean<List<WorksInfo>> selectWorksInfoByCategory(Category category, String type);

    /**
     * 根据作品id删除作品
     * @param worksInfo
     * @return
     */
    RespBean<Integer> deleteWorkById(WorksInfo worksInfo);

    /**
     * 上传作品文件
     * @param file
     * @param poster
     * @param worksInfo
     * @return
     * @throws Exception
     */
    RespBean uploadFile(MultipartFile file, MultipartFile poster, WorksInfo worksInfo) throws Exception;
}
